package com.castle.fortress.admin.cms.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.castle.fortress.admin.cms.dto.CmsColConfigDto;
import com.castle.fortress.admin.cms.entity.CmsColConfigEntity;
import com.castle.fortress.admin.cms.entity.CmsModelEntity;
import com.castle.fortress.common.entity.RespBody;

import java.util.List;

/**
 * cms模型字段配置表 服务类
 *
 * @author castle
 * @since 2022-03-03
 */
public interface CmsColConfigService extends IService<CmsColConfigEntity> {

    /**
     * 分页展示cms模型字段配置表列表
     * @param page
     * @param cmsColConfigDto
     * @return
     */
    IPage<CmsColConfigDto> pageCmsColConfig(Page<CmsColConfigDto> page, CmsColConfigDto cmsColConfigDto);


    /**
     * 展示cms模型字段配置表列表
     * @param cmsColConfigDto
     * @return
     */
    List<CmsColConfigDto> listCmsColConfig(CmsColConfigDto cmsColConfigDto);

    /**
     * 填充字段类型
     * @param modelId
     * @param list
     * @return
     */
    List<CmsColConfigEntity> fillType(Long modelId,List<CmsColConfigEntity> list);

    /**
     * 保存字段信息
     * @param cmsModelEntity
     * @param entities
     */
    void saveCols(CmsModelEntity cmsModelEntity, List<CmsColConfigEntity> entities);

    /**
     * 修改字段信息
     * @param cmsModelEntity
     * @param entities
     */
    void updateCols(CmsModelEntity cmsModelEntity,List<CmsColConfigEntity> entities);


    /**
     * 获取所有的表名
     * @return
     */
    List<String> allTableNames();

    /**
     * 删除模型对应的字段
     * @param e
     */
    void delCols(CmsModelEntity e);

    /**
     * 检查字段是否重复
     * @param dto
     * @return
     */
    RespBody checkColumnRepeat(CmsColConfigDto dto);

    /**
     * 查询栏目对应的模型扩展字段
     * @param channelId
     * @return
     */
    List<CmsColConfigDto> listByChannel(Long channelId);
}
